package uiMain;

import UI.funcionarios.PanelOpcionBuscarPropiedadPorCodigo;
import UI.funcionarios.PanelOpcionBuscarPropiedadPorCriterios;
import UI.funcionarios.PanelOpcionRegistrarUnCliente;
import UI.funcionarios.PanelOpcionConsultarPago;
import UI.funcionarios.PanelOpcionListarClientesDeSubordinados;
import UI.funcionarios.PanelOpcionListarClientesDemandantes;
import UI.funcionarios.PanelOpcionListarSubordinados;
import UI.funcionarios.PanelOpcionListarTodasLasPropiedades;
import UI.funcionarios.PanelOpcionRegistrarInmueble;
import UI.funcionarios.PanelOpcionRegistrarUnFuncionario;
import UI.funcionarios.PanelOpcionRegistrarUnNegocio;
import UI.funcionarios.PanelOpcionRegistrarUnidad;
import UI.todos.PanelOpcionCambiarContrasenha;
import java.util.LinkedList;

public class MenuDeOpciones {

    protected LinkedList<String> listaOpciones;

    public LinkedList<String> getListaOpciones() {
        return this.listaOpciones;
    }

    public void setListaOpciones(LinkedList<String> listaOpciones) {
        this.listaOpciones = listaOpciones;
    }

    public MenuDeOpciones() {
        
    }

    //Para un menú acorde al nivel de acceso del usuario (funcionario, funcionario jefe, cliente, administrador...)
    public MenuDeOpciones(byte nivelDeAcceso) {
        listaOpciones = new LinkedList();

        switch (nivelDeAcceso) {

            case 5: //Caso funcionario
                listaOpciones.add(new PanelOpcionRegistrarUnCliente().toString());
                listaOpciones.add(new PanelOpcionListarClientesDemandantes().toString());
                listaOpciones.add(new PanelOpcionRegistrarUnidad().toString());
                listaOpciones.add(new PanelOpcionRegistrarInmueble().toString());
                listaOpciones.add(new PanelOpcionBuscarPropiedadPorCodigo().toString());
                listaOpciones.add(new PanelOpcionBuscarPropiedadPorCriterios().toString());
                listaOpciones.add(new PanelOpcionListarTodasLasPropiedades().toString());
                listaOpciones.add(new PanelOpcionRegistrarUnNegocio().toString());
                listaOpciones.add(new PanelOpcionConsultarPago().toString());
                listaOpciones.add(new PanelOpcionCambiarContrasenha().toString());
                break;
            case 6://Funcionario jefe
                listaOpciones.add(new PanelOpcionRegistrarUnCliente().toString());
                listaOpciones.add(new PanelOpcionListarClientesDemandantes().toString());
                listaOpciones.add(new PanelOpcionRegistrarInmueble().toString());
                listaOpciones.add(new PanelOpcionRegistrarUnidad().toString());
                listaOpciones.add(new PanelOpcionBuscarPropiedadPorCodigo().toString());
                listaOpciones.add(new PanelOpcionBuscarPropiedadPorCriterios().toString());
                listaOpciones.add(new PanelOpcionListarTodasLasPropiedades().toString());
                listaOpciones.add(new PanelOpcionRegistrarUnNegocio().toString());
                listaOpciones.add(new PanelOpcionConsultarPago().toString());
                listaOpciones.add(new PanelOpcionRegistrarUnFuncionario().toString());
                listaOpciones.add(new PanelOpcionListarSubordinados().toString());
                listaOpciones.add(new PanelOpcionListarClientesDeSubordinados().toString());
                listaOpciones.add(new PanelOpcionCambiarContrasenha().toString());
                break;
        }
    }

    public void agregarOpcion(String nombreDeLaOpcion) {
        if (!this.listaOpciones.contains(nombreDeLaOpcion)) {
            this.listaOpciones.add(nombreDeLaOpcion);
        }
    }

    public void eliminarOpcion(String nombreDeLaOpcion) {
        this.listaOpciones.remove(nombreDeLaOpcion);
    }

    public byte getNumeroDeOpciones() {
        return (byte) this.listaOpciones.size();
    }

}
